package com.ruoyi.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.domain.PmMaterialItem;
import com.ruoyi.system.domain.vo.BudgetGroupVo;

import java.util.List;
import java.util.Map;

public interface IPmMaterialItemService extends IService<PmMaterialItem> {

    /**
     * 分页查询清单下的物料条目
     */
    IPage<PmMaterialItem> selectMaterialItemPage(int pageNum, int pageSize, Long listId, PmMaterialItem item);

    /**
     * 批量添加物料条目（含分组处理）
     */
    boolean batchAddItems(Long listId, List<PmMaterialItem> items);

    /**
     * 确认物料预算类别（同组单选约束）
     */
    boolean confirmBudgetType(Long itemId, Integer finalBudgetType, Long operatorId, String operatorName);

    /**
     * 按清单ID查询预算分组聚合数据（前端展示用）
     */
    List<BudgetGroupVo> getBudgetGroupListByListId(Long listId);

    /**
     * 按清单ID查询预算分组聚合数据（按物料分类拆分）
     */
    Map<Integer, List<BudgetGroupVo>> getBudgetGroupListByListIdWithCategorySplit(Long listId);


    /**
     * 更新物料条目
     */
    boolean updateMaterialItem(PmMaterialItem item, Long operatorId, String operatorName);

    /**
     * 删除物料条目（逻辑删除）
     */
    boolean deleteMaterialItem(Long itemId, Long operatorId, String operatorName);

    /**
     * 批量删除物料条目（逻辑删除）
     */
    boolean batchDeleteMaterialItems(List<Long> itemIds, Long operatorId, String operatorName);
}
